﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using System.Drawing;

namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_EditPublishModule : System.Web.UI.Page
    {
        int ciclo = 0;
        string validaSession = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {

                    ciclo = MaxCiclo();
                    //CargarDdls();
                    CargaDdlTipoModulos();
                    if (ciclo == 0)
                    {
                        lblMensajeErrorPublicar.Text = "No existe ningún ciclo";
                        idMensajePublicar.Visible = true;
                        tablaPublicar.Visible = false;

                    }
                    else if (ddlTipoModulo.Items.Count == 0 || ddlTipoModulo.Items.Count == 1)
                    {
                        lblMensajeErrorPublicar.Text = "No existe ningún Modulo en este ciclo";
                        idMensajePublicar.Visible = true;
                        tablaPublicar.Visible = false;
                    }
                    ddlNivel.AutoPostBack = true;
                    ddlTipoModulo.AutoPostBack = true;
                    MaintainScrollPositionOnPostBack = true;
                    btnPublicarModulo.Attributes.Add("onclick", " this.disabled = true,this.value='Procesando...'; " + ClientScript.GetPostBackEventReference(btnPublicarModulo, null) + ";");
                    MaintainScrollPositionOnPostBack = true;
                    OcultarYMostrarPublicacion(false);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    Response.Redirect("UI_DashboardStudents.aspx");
                }
            }
            else
            {
                MaintainScrollPositionOnPostBack = true;
            }
        }

        private void CargarDdls()
        {
            ListadoNiveles oNivel = new ListadoNiveles();
            List<Nivel> lista = new List<Nivel>();
            oNivel.ciclo = (int)Session["maxCiclo"];
            oNivel.idTipoModulo = int.Parse(ddlTipoModulo.SelectedValue);
            if (ddlTipoModulo.SelectedIndex == 0)
            {
                OcultarYMostrarPublicacion(false);
            }
            else
            {
                lista = oNivel.getNivelesConTipo();
                lista.Insert(0, new Nivel() { idNivel = 0, equivalente = "<Elegir un nivel>" });
                ddlNivel.DataSource = lista;
                ddlNivel.DataTextField = "equivalente";
                ddlNivel.DataValueField = "idNivel";
                ddlNivel.DataBind();
            }
        }
        private void CargaDdlTipoModulos()
        {
            TipoModulos tipoModu = new TipoModulos();
            tipoModu.ciclo = (int)Session["maxCiclo"];
            List<TipoModulos> lista = new List<TipoModulos>();
            lista = tipoModu.GetTipoModulos();
            lista.Insert(0, new TipoModulos() { idTipoModulo = 0, tipoModulo = "<seleccione>" });
            ddlTipoModulo.DataSource = lista;
            ddlTipoModulo.DataTextField = "tipoModulo";
            ddlTipoModulo.DataValueField = "idTipoModulo";
            ddlTipoModulo.DataBind();

        }
        private int MaxCiclo()
        {
            int maxCiclo;
            Ciclos oCiclo = new Ciclos();
            maxCiclo = oCiclo.GetMaxCiclo();
            lblCiclo.Text = "Ciclo # " + maxCiclo;
            Session["maxCiclo"] = maxCiclo;
            return (int)Session["maxCiclo"];
        }
        private void OcultarYMostrarPublicacion(bool value)
        {
            fila1.Visible = value;
            fila2.Visible = value;
            fila3.Visible = value;
        }
        private void CargarModulos()
        {

            ListadoNiveles oListadoNiveles = new ListadoNiveles();
            string menValida = "";
            oListadoNiveles.ciclo = (int)Session["maxCiclo"];
            oListadoNiveles.idNivel = int.Parse(ddlNivel.SelectedValue);
            oListadoNiveles.idTipoModulo = int.Parse(ddlTipoModulo.SelectedValue);
            menValida = oListadoNiveles.ConsultarNivelPublicado();
            if (menValida == "NIVEL YA PUBLICADO EN ESTE CICLO")
            {
                Modulos oModulos = new Modulos();
                oModulos.nivel = int.Parse(ddlNivel.SelectedValue);
                oModulos.ciclo = (int)Session["maxCiclo"];
                oModulos.tag = 2;
                oModulos.idTipoModulo = int.Parse(ddlTipoModulo.SelectedValue);
                List<Modulos> lista = new List<Modulos>();
                List<Modulos> lista1=new List<Modulos>();
                lista = oModulos.getModulosByNivel();
                lista1=oModulos.GetModulosPublicados();
                if (lista.Count == 0)
                {
                    gvModulos.DataSource = lista;
                    gvModulos.DataBind();

                }
                else
                {
                    gvModulos.DataSource = lista;
                    gvModulos.DataBind();
                    OcultarYMostrarPublicacion(true);
                    txtFechaInicio.Text = lista1[0].fechaInicio1;
                    txtFechaFin.Text = lista1[0].fechaFin1;
                    txtHoraInicio.Text = lista1[0].horaInicio1.ToString();
                    txtHoraFin.Text = lista1[0].horaFin1.ToString();
                    Session["idFe"] = lista1[0].idFechaModulos;
                    Session["idHo"]=lista1[0].idHorarioDisponibilidad;
                }

            }

            else if (menValida == "PUBLICAR")
            {
                lblMensaje.Text = "";
                divMensajeError.Visible = true;
                gvModulos.DataSource = "";
                gvModulos.DataBind();
                OcultarYMostrarPublicacion(false);
            }

        }
        protected void ActivaError()
        {
            lblvalida.Visible = true;
            lblvalida.ForeColor = Color.Red;
        }
        protected void ActivaSuccess()
        {
            lblvalida.Visible = true;
            lblvalida.ForeColor = Color.Green;
        }

        protected void ddlNivel_SelectedIndexChanged(object sender, EventArgs e)
        {
           // divMensajeError.Visible = false; 
            lblvalida.Visible = false;
           // CargarModulos();
            if (ddlNivel.SelectedIndex == 0)
            {
                OcultarYMostrarPublicacion(false);
                CargarModulos();
            }
            else
            {
                divMensajeError.Visible = false;
                CargarModulos();
            }

        }

        protected void btnPublicarModulo_Click(object sender, EventArgs e)
        {
            string mensaje = "";
            try
            {
                Modulos oModulos = new Modulos();
                oModulos.nivel = int.Parse(ddlNivel.SelectedValue);
                oModulos.ciclo = (int)Session["maxCiclo"];
                oModulos.horaInicio1 = TimeSpan.Parse(txtHoraInicio.Text);
                oModulos.horaFin1 = TimeSpan.Parse(txtHoraFin.Text);
                oModulos.fechaInicio = DateTime.Parse(txtFechaInicio.Text);
                oModulos.fechaFin = DateTime.Parse(txtFechaFin.Text);
                oModulos.idFechaModulos = (int)Session["idFe"];
                oModulos.idHorarioDisponibilidad = (int)Session["idHo"];
               // oModulos.idTipoModulo = int.Parse(ddlTipoModulo.SelectedValue);
                mensaje = oModulos.EditHoarioYFechaPublicacion();
                Session.Remove("idFe");
                Session.Remove("idHo");
                lblvalida.Text = mensaje;
                lblvalida.ForeColor = Color.Green;
                lblvalida.Visible = true;
                OcultarYMostrarPublicacion(false);
            }
            catch (Exception)
            {   
                throw;
            }
        }

        protected void ddlTipoModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            divMensajeError.Visible = false;
            CargarDdls();
        }

        protected void gvModulos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = Convert.ToInt32(e.CommandArgument);
            string id = gvModulos.DataKeys[index].Value.ToString();
            HfDeleteID.Value = id;
            txtCuposMod.Text = gvModulos.Rows[index].Cells[4].ID;
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
        }

        protected void btnCambiarCupos_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtCuposMod.Text))
            {
                ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeMal('EL CAMPO CUPOS ES OBLIGATORIO !!!')", true);
            }
            else
            {
                Modulos oModulos = new Modulos();
                int id = int.Parse(HfDeleteID.Value);
                int cupos = int.Parse(txtCuposMod.Text);
                oModulos.idModulo = id;
                oModulos.cupos = cupos;
                string mensaje = oModulos.UpdateCupos();

                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script type='text/javascript'>");
                //sb.Append("alert('Realizado Correctamente');");
                sb.Append("$('#flexModal').modal('hide');");
                sb.Append(@"</script>");
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "delHideModalScript", sb.ToString(), false);
                ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeBien('CUPOS MODIFICADOS CORRECTAMENTE')", true);
                CargarModulos();
            }
            
        }


    }
}